import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:interview/utils/logger.dart';


class Network {
  // 静态实例，用于实现单例
  static final Network _instance = Network._internal();

  // 工厂构造函数，返回单例实例
  factory Network() {
    return _instance;
  }

  // 私有构造函数
  Network._internal();

  // 当前的网络状态
  List<ConnectivityResult> _currentNetworkStatus = [ConnectivityResult.none];

  // 标志位，监听器是否初始化完成
  bool _isInitialized = false;

  // 初始化监听器（只会执行一次）
  void listen() {
    if (!_isInitialized) {
      _NetworkListener();
      _isInitialized = true;
    }
  }

  // 初始化网络监听器
  void _NetworkListener() {
    // 开始监听网络状态变化
    Connectivity().onConnectivityChanged.listen((List<ConnectivityResult> results) {
      // 确保结果不为空，并更新到 _currentNetworkStatus
      if (results.isNotEmpty) {
        _currentNetworkStatus = results;
        Logger.info('更新网络状态: $_currentNetworkStatus', tag: "_NetworkListener");
      } else {
        Logger.warn('收到空的网络状态更新', tag: "_NetworkListener");
      }
    });
  }

  // 判断是否为 WiFi
  bool isWiFi() {
    return _currentNetworkStatus.contains(ConnectivityResult.wifi);
  }

  // 判断是否为移动数据
  bool isMobileData() {
    return _currentNetworkStatus.contains(ConnectivityResult.mobile);
  }
}